package business.tdk.c2s.iclass;

import business.global.pk.tdk.TDKdefine;
import com.ddm.server.common.CommLogD;
import jsproto.c2s.cclass.room.BaseCreateRoom;

import java.io.*;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 淮滨麻将创建房间
 */
public class CTDK_CreateRoom extends BaseCreateRoom implements Cloneable, Serializable {
    //YSJVB START
    /**
     * 底分
     * 1 : 1-2-3-4-5
     * 2 : 2-4-6-8-10
     * 3 : 3-6-9-12-15
     * 5 : 5-10-15-20-25
     * 10: 10-20-30-40-50
     */
    private int difen=1;

    /**
     * 牌数：
     * 5人9-A ， 5人10-A
     * 7人7-A  ，7人 8-A    7人2-A （全牌）
     * 4人9-A  ，4人 J-A
     */
    private int paishu=0;

    /**
     * 上分时间
     */
    private int sfsj=60;

    public int getDifen() {
        return difen <= 0 ? 1 : difen;
    }

    public void setDifen(int difen) {
        this.difen = difen;
    }

    public int getPaishu() {
        return paishu;
    }

    public void setPaishu(int paishu) {
        this.paishu = paishu;
    }

    public int getSfsj() {
        return sfsj;
    }

    public void setSfsj(int sfsj) {
        this.sfsj = sfsj;
    }

    /**
     * 对象之间的浅克隆【只负责copy对象本身，不负责深度copy其内嵌的成员对象】
     *
     * @return
     */
    @Override
    public CTDK_CreateRoom clone() {
        return (CTDK_CreateRoom) super.clone();
    }

    /**
     * 实现对象间的深度克隆【从外形到内在细胞，完完全全深度copy】
     *
     * @return
     */
    public CTDK_CreateRoom deepClone() {
        // Anything 都是可以用字节流进行表示，记住是任何！
        CTDK_CreateRoom cookBook = null;
        try {

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            // 将当前的对象写入baos【输出流 -- 字节数组】里
            oos.writeObject(this);

            // 从输出字节数组缓存区中拿到字节流
            byte[] bytes = baos.toByteArray();

            // 创建一个输入字节数组缓冲区
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
            // 创建一个对象输入流
            ObjectInputStream ois = new ObjectInputStream(bais);
            // 下面将反序列化字节流 == 重新开辟一块空间存放反序列化后的对象
            cookBook = (CTDK_CreateRoom) ois.readObject();

        } catch (Exception e) {
            CommLogD.error(e.getClass() + ":" + e.getMessage());
        }
        return cookBook;
    }
    
    
    @Override
    public int hashCode() {
        return HashCodeBuilder.reflectionHashCode(this);
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
    }

    @Override
    public boolean equals(Object obj) {
        return EqualsBuilder.reflectionEquals(this, obj);
    }
}
